-- @Author: baidwwy
-- @Date:   2023-10-05 09:43:27
-- @Last Modified by:   baidwwy
-- @Last Modified time: 2023-12-26 12:13:51
--======================================================================--
local 游戏介绍 = class()
local tp,zts,zys
local insert = table.insert
local floor = math.floor
local ceil = math.ceil
local min = math.min
local max = math.max
local bw = require("gge包围盒")(0,0,148,18)
local box = 引擎.画矩形
local title = {"界面介绍","玩家攻略","门派说明","宝宝相关","奇经八脉","游戏须知","活动相关"}
local 显示文本 = "" --读入文件("./游戏介绍/界面介绍.txt")

function 游戏介绍:初始化(根)
	self.ID = 162
	self.x = 50
	self.y = 30
	self.xx = 0
	self.yy = 0
	self.方案 = 0
	self.注释 = "游戏介绍"
	self.可视 = false
	self.鼠标 = false
	self.焦点 = false
	self.可移动 = true
	local 按钮 = 根._按钮
	local 自适应 = 根._自适应
	local 资源 = 根.资源
	local 小型选项栏 = 根._小型选项栏
	local 滑块 = 根._滑块
	self.资源组 = {
		[1] = 自适应.创建(0,1,700,520,3,9),
		[2] = 按钮.创建(自适应.创建(18,4,16,16,4,3),0,0,4,true,true),--关闭
		[3] = 自适应.创建(7,1,120,22,1,3,nil,18),
		[20] = 滑块.创建(自适应.创建(11,4,15,40,2,3,nil),1,9,460,2),
		[21] = 按钮.创建(自适应.创建(12,4,60,22,1,3),0,0,4,true,true,"确认")
	}
	for i = 1, #title do
		self.资源组[i + 3] = 按钮.创建(自适应.创建(12,4,135,22,1,3),0,0,4,true,true,title[i])
		self.资源组[i + 3]:绑定窗口_(self.ID)
		self.资源组[i + 3]:置偏移(32,0)
	end
	self.选中页 = 1
	self.介绍加入 = 0
	self.资源组[2]:绑定窗口_(self.ID)
	self.窗口时间 = 0
	tp = 根
	zts = tp.字体表.普通字体
	self.介绍文本 = 根._丰富文本(500,460)
	self.介绍文本:添加元素("ms",根.包子表情动画[85])
	self.介绍文本:置默认颜色(0xFFFFFF00)
end

function 游戏介绍:打开()
	if self.可视 then
		self.可视 = false
	else
		insert(tp.窗口_,self)
		tp.运行时间 = tp.运行时间 + 1
		self.窗口时间 = tp.运行时间
		self.可视 = true
		self.介绍文本:清空()
		self.介绍文本:添加文本(显示文本)
	end
end

function 游戏介绍:显示(dt,x,y)
	self.焦点 = false
	self.资源组[1]:显示(self.x,self.y)
	self.资源组[2]:更新(x,y)
	self.资源组[21]:更新(x,y)
	if self.资源组[2]:事件判断() or self.资源组[21]:事件判断() then
		self:打开()
		return false
	end
	for i = 1, #title do
		self.资源组[i + 3]:更新(x,y, self.选中页 ~= i)
		if self.资源组[i + 3]:事件判断() then
			self.选中页 = i
			self.介绍加入 = 0
			self.资源组[20]:置起始点(0)
			显示文本 = 读入文件("./游戏介绍/"..title[i]..".txt")
		end
	end
	tp.窗口标题背景_:显示(self.x-90+self.资源组[1].宽度/2,self.y)
    引擎.场景.字体表.标题字体:显示(self.x+self.资源组[1].宽度/2,self.y+3,"游戏介绍")
    self.资源组[2]:显示(self.x-18+self.资源组[1].宽度,self.y+2)
    for i = 1, #title do
		self.资源组[i + 3]:显示(self.x+10,self.y+29 + (i - 1) * 30,nil,nil,nil,self.选中页 == i,2)
	end
	self.资源组[21]:显示(self.x+600,self.y+490)
	self.介绍文本.宽度,self.介绍文本.默认宽度,self.介绍文本.高度 = 500,500,460
	if #self.介绍文本.显示表 > 28 then
		self.资源组[20]:置高度(min(floor(460/(#self.介绍文本.显示表-28)),180))
		self.介绍加入 = min(ceil((#self.介绍文本.显示表-28)*self.资源组[20]:取百分比()),#self.介绍文本.显示表-28)
		self.介绍文本.加入 = self.介绍加入
		self.资源组[20]:显示(self.x + 588 + 85,self.y + 29,x,y,self.鼠标)
	end
	if 引擎.取鼠标滚轮() ==1 and self.介绍加入 > 0 then--鼠标上滚动
	    self.资源组[20]:置起始点(self.资源组[20]:取百分比转换(self.介绍加入-1,28,#self.介绍文本.显示表))
	elseif 引擎.取鼠标滚轮() ==-1 and self.介绍加入 < #self.介绍文本.显示表 - 28 then--鼠标下滚动
		self.资源组[20]:置起始点(self.资源组[20]:取百分比转换(self.介绍加入+1,28,#self.介绍文本.显示表))
	end
	if 引擎.鼠标弹起(0) and self.鼠标 and not tp.消息栏焦点 then
		self.介绍文本:清空()
		self.介绍文本:添加文本(显示文本)
		for i=1,#self.介绍文本.显示表 - 28 do
			self.介绍文本:滚动(1)
		end
	end
	self.焦点 = true
	self.介绍文本:显示(self.x + 160,self.y + 29)
end

function 游戏介绍:检查点(x,y)
	if self.可视 and self.资源组[1]:是否选中(x,y)  then
		return true
	end
end

function 游戏介绍:初始移动(x,y)
	tp.运行时间 = tp.运行时间 + 1
	if not tp.消息栏焦点 then
		self.窗口时间 = tp.运行时间
	end
	if not self.焦点 then
		tp.移动窗口 = true
	end
	if self.可视 and self.鼠标 and  not self.焦点 then
		self.xx = x - self.x
		self.yy = y - self.y
	end
end

function 游戏介绍:开始移动(x,y)
	if self.可视 and self.鼠标 then
		self.x = x - self.xx
		self.y = y - self.yy
	end
end

return 游戏介绍